<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var strStr = function (haystack, needle) {
            // 1. 子节点为空
            if (needle.length === 0) {
                return 0
            }
            // 2. 父节点为空
            if (haystack.length === 0) {
                return -1
            }
            // 3. 声明变量
            let m = haystack.length - 1
            let n = needle.length - 1
            let i = 0
            let j = 0
            // 4. while循环 两个指针都在范围内
            //    如果不相等 父亲指针后退一位
            //    儿子指针重置
            //    continue
            while (i <= m && j <= n) {
                if (haystack[i] !== needle[j]) {
                    i = i - j + 1
                    j = 0
                    continue
                }
                //    如果儿子指针到头了 就return i - j
                //    如果父亲指针到头，儿子指针没到头，就返回 -1
                //    记得指针累加
                //    最终返回-1
                if (j === n) {
                    return i - j
                }
                if (i === m) {
                    return -1
                }
                i++
                j++
            }
            return -1
        };
        console.log(strStr("abcadabcacabcab", 'abcab')); // false
    </script>
</body>

</html>